%!
% grayscaled text test, including a trivial user bitmap font

/grayalphsave save def		% prevent left over effects

/inch {72 mul} def

/BuildCharDict 10 dict def
/$ExampleFont 7 dict def
$ExampleFont begin
  /FontType 3 def % user defined font.
  /FontMatrix [1 0 0 1 0 0] def
  /FontBBox [0 0 1 1] def
  /Encoding 256 array def
  0 1 255 {Encoding exch /.notdef put} for
  Encoding (a) 0 get /plus put
  /CharStrings 2 dict def
  CharStrings /.notdef {} put
  CharStrings /plus
    { gsave
      0 0 moveto
      32 32 true [32 0 0 -32 0 32]
    {<0007E000 0007E000 0007E000 0007E000 0007E000 0007E000 0007E000 0007E000
      0007E000 0007E000 0007E000 0007E000 0007E000 FFFFFFFF FFFFFFFF FFFFFFFF
      FFFFFFFF FFFFFFFF FFFFFFFF 0007E000 0007E000 0007E000 0007E000 0007E000
      0007E000 0007E000 0007E000 0007E000 0007E000 0007E000 0007E000 0007E000>
      } imagemask
      grestore
    } put
  /BuildChar
    { BuildCharDict begin
        /char exch def
        /fontdict exch def
        /charproc
          fontdict /Encoding get char get
          fontdict /CharStrings get
          exch get def
        1 0 0 0 1 1 setcachedevice 
        charproc
      end
    } def
end

/MyFont $ExampleFont definefont pop

      newpath
        .5 inch 7.5 inch moveto
        7.5 inch 0 rlineto
        0 1.5 inch rlineto
        -7.5 inch 0 rlineto
      closepath
      0 setgray
      fill

      /MyFont findfont 72 scalefont setfont
      .75 inch 7.75 inch moveto
      0 1 6
        { /n exch def
          1 n 6 div sub setgray
          (a) show
        } for

showpage
clear cleardictstack
grayalphsave restore
